#ifndef _VECTOR_H
#define _VECTOR_H

#include"Aollator.h"
#include"iterator.h"
#include<iostream>
using namespace std;

template<class value_traits>
class initial_value
{
    typedef value_traits    value_type;
    typedef value_traits*   pointer;
    typedef value_traits&   reference;
};

template<class T>
class _minvector_iterator:public miniterator
{
public:
    typedef typename random_access_iterator_tag_min              iterator_category_min;
    typedef typename miniterator::value_type                     value_type;
    typedef typename miniterator::difference_type                difference_type;
    typedef typename miniterator::pointer                        pointer;
    typedef typename miniterator::reference                      reference;

public:
    iterator_category_min category;
    value_type value;
    difference_type difference;
    pointer ptr;
    reference ref;
};

template<class T,class TYPE=initial_value<T>>
class minvector
{
public:
    typedef _minvector_iterator<T>      iterator;
    typedef initial_value::value_type   value_type;
    typedef initial_value::pointer      pointer;
    typedef initial_value::reference    reference;

public:
    minvector();
    minvector(int num,T& value);
    bool push_back(value_type&);
private:
    iterator first;
    iterator back;
    iterator end;
};


#include"minvector.inl"
#endif 